.\"Text automatically generated by txt2man
.TH zcc 1 "01 December 2009" "" "z88 Development Kit"
.SH NAME
\fBzcc \fP- The frontend of z88dk
.SH SYSNOPIS
zcc [flags] [files to be compiled/linked]
.SH DESCRIPTION
This manual page documents briefly the z88dk tools. This manual page
was written for the Debian GNU/Linux distribution (but may be used
by others), because the original program does not have a manual page.
.RE
.PP

.RS
Please refer to the z88dk documentation in /usr/share/doc/z88dk-doc for the complete description of the system.
If /usr/share/doc/z88dk-doc not exists, please install the package z88dk-doc.
.PP
The frontend of z88dk is called zcc, it is this that you should call
if you want to do any compilations.
.PP
The files can be either C files (.c), preprocessed C \fBfiles\fP(.i),
compiled C files (.asm), optimised compiled file (.opt) or assembled
files (.obj), any combination of them can be mixed together and the
relevant processed done on them.
.PP
Processing of a file list is done on each file in turn (i.e. preprocess,
compile, optimise, assemble) at the end all files may be linked into
a single executable if desired.
.SH OPTIONS
Options to control the action of the frontend:
.TP
.B
+[file]
Name of alternate config file (must be the first argument).
.PP
.nf
.fam C
   Predefined alternate configs:
     abc80        ABC80
     aceansi      Jupiter ACE, using VT-ANSI engine
     cpm          CP/M
     msx          MSX 1
     mz           Sharp MZ
     mzansi       Sharp MZ, using VT-ANSI
     nc           Amstrad NC100
     rex          REX 6000
     sam          Sam Coupe
     svi          Spectravideo SVI
     m5           SORD M5
     ti82         Ti82, using ROM text routines
     ti82ansi     Ti82, using VT-ANSI
     ti83         Ti83, using ROM text routines
     ti83ansi     Ti83, using VT-ANSI
     ti85         Ti85, using ROM text routines
     ti85ansi     Ti85, using VT-ANSI
     ti86         Ti86, using ROM text routines
     ti86ansi     Ti86, using VT-ANSI
     ti8x         Ti83+, using ROM text routines
     [ti8xansi]   Ti83+, using VT-ANSI
     vz           VZ / Laser 200
     vzansi       VZ / Laser 200, using VT-ANSI
     z88          Cambridge Z88
     z88ansi      Cambridge Z88, using VT-ANSI
     z88net       Cambridge Z88 with TCP/IP
     zx           ZX Spectrum
     zx81         ZX 81
     zx81ansi     ZX 81, using VT-ANSI
     zxansi       ZX Spectrum, using VT-ANSI

.fam T
.fi
.TP
.B
\fB-a\fP
Produce .asm (or .opt) file only
.TP
.B
\fB-c\fP
Do not link object files
.TP
.B
\fB-E\fP
Preprocess files only, leave output in .i file
.TP
.B
\fB-o\fP [file]
Specify output file for binary (default is a.bas for BASIC programs and a.bin for application binaries)
.TP
.B
\fB-On\fP
Optimize compiler output (to .opt file) n can be either 0 (none) 1,2,3, level 2 is recommended. Level 3 is suitable for large programs (includes certain lib functions to reduce size of \fBcode\fP(!))
.TP
.B
\fB-v\fP
Verbose - echo commands as they are executed
.TP
.B
\fB-vn\fP
Don't be verbose
.RE
.PP


.RS
Options to control library usage:
.TP
.B
\fB-l\fP[name]
Link in a library - supply just the name (after placing them in the correct directory).
.PP
.nf
.fam C
      The 'name' are:
      farz88       Z88 far support
      gfx          Z88 BASIC graphics lib
      gfxapp       Z88 application graphics lib
      m            Generic math routines
      malloc       Generic near malloc routine
      mz           OZ's math routines
      ndos         Fake file-routines, return errors only
      net          Z88 socket routines for ZSock
      netdev       Z88 socket routines for devices
      p3           +3 file support library
      tigray82     Ti82 graylib routines
      tigray83     Ti83 graylib routines
      tigray83p    Ti83+ graylib routines
      tigray85     Ti85 graylib routines
      tigray86     Ti86 graylib routines
      z88          Some Z88 application routines, like mailboxing
      zxmath       ZX Spectrum ROM based math routines
      zxvgs        ZXVGS hardware support

.fam T
.fi
.TP
.B
\fB-m\fP
Generate .map files when assembling/linking
.RE
.PP


.RS
Options to control the type code produced:
.TP
.B
\fB-unsigned\fP
Implicitly define everything as unsigned unless explicitly told otherwise.
.TP
.B
\fB-create-app\fP
Create an application image (i.e. bank 63,62 etc)
.TP
.B
\fB-make-app\fP
(App) Notify the compiler that you're trying to make an application
.TP
.B
\fB-reqpag\fP=
(App) Number of 256 byte pages required for bad application
.TP
.B
\fB-zorg\fP=
(App) Origin for a Z88 application
.TP
.B
\fB-safedata\fP=
(App) Amount of safedata required by your code
.TP
.B
\fB-defvars\fP=
(App) Where static variables should be dropped (only valid for single file compilations, but see later)
.TP
.B
\fB-expandz88\fP
(App) Expanded z88 required
\fB-no-expandz88\fP (App) Expanded z88 not required (these two flags toggle some startup code to check for an expanded machine)
.TP
.B
\fB-startup\fP=3
Produce standalone code that can be run from a set address from BASIC. Use \fB-zorg\fP= to change the address
.TP
.B
\fB-R\fP
(Use with above) produces relocatable code that can be loaded into a DIM'd BASIC array.
.TP
.B
\fB-smartpf\fP
Intelligent printf routine handling
.TP
.B
\fB-no-smartpf\fP
Turn off the intelligent printf handling
.TP
.B
\fB-make-lib\fP
Shortcut to generate .o files from library .c files
.TP
.B
\fB-stackoffset\fP
Sets the stack offset for shared libs (see package.txt for details)
.RE
.PP


.RS
Miscellaneous options:
.TP
.B
\fB-z80-verb\fP
Allow z80asm to be verbose, this tends to generate a lot
of output to the screen so may not be desired.
.TP
.B
\fB-cc\fP
Intersperse C code as comments in the assembler output, warning:
this *will* clobber some optimizations.
.TP
.B
\fB-Wall\fP
Turn on all the compiler warnings
.TP
.B
\fB-Wnone\fP
Turn off all compiler warnings
.TP
.B
\fB-Wn\fP[num]
Turn off the compiler warning [num]
.TP
.B
\fB-W\fP[num]
Turn on the compiler warning [num]
.TP
.B
\fB-asxx\fP
Cause the compiler to emit asxx compatible code
.TP
.B
\fB-Cp\fP[option]
Pass an option through to the pre-processor
.TP
.B
\fB-Ca\fP[option]
Pass an option through to the assembler
.PP
In addition, the flags, \fB-D\fP, \fB-I\fP, \fB-U\fP are passed through to the preprocessor.
.SH SEE ALSO
\fBz88dk\fP(1), \fBz88dk-zcc\fP(1), \fBz88dk-z80asm\fP(1), \fBz88dk-appmake\fP(1), \fBz88dk-copt\fP(1).
.RE
.PP

.SH AUTHOR
z88dk was written by Dominic Morris <dom@z88dk.org>, and others.
This manual page was written by Krystian Wlosek <tygrys@waw.pdi.net> using exists documentation, for the Debian GNU/Linux system.
